home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / InputSprocket_SDK / InputSprocket Release Notes < prev    next >
Encoding:
Text File  |  1999-10-29  |  20.8 KB  |  442 lines  |  [ttro/ttxt]

  1. InputSprocket 1.7 SDK
  2. Release Notes
  3. -----------------------
  4.  
  5.  
  6. For a detailed list of changes from the previous version, please read the
  7. change list at the end of this document.
  8.  
  9. Please report all bugs using the bug reporter on Apple Developer Connection:
  10.  
  11. <http://developer.apple.com/bugreporter/index.html>
  12.  
  13.  
  14. Release Components
  15. ------------------
  16. InputSprocket Extension          The main InputSprocket library, all drivers integrated
  17. USB HID Driver                               This USB driver is required for joystick support on systems
  18.                                  which do not have USB Device Extension 1.3 or later
  19.  
  20. HID Library                      This shared library contains the HID parser, required for USB
  21.  
  22. InputSprocket Debug Extension    Debug build of InputSprocketLib, all drivers integrated.
  23.                                  This file should be installed instead of InputSprocket Extension
  24.                                  not in addition to it.
  25.  
  26. InputSprocket.h                  Required header for applications.
  27. InputSprocket.r                  Rez templates for appliciations
  28.  
  29. InputSprocketLib                 link library
  30. ISpDeferLib                      link library, used for InputSprocket drivers
  31.  
  32. Writing an ISp Driver.pdf                    Documentation for building an InputSprocket driver
  33.  
  34. WARNING: don't place both the debugging and non-debugging versions of the
  35. library in the search path or you will not be sure which version you are
  36. using.
  37.  
  38.  
  39.  
  40. Dependencies
  41. ------------
  42.  
  43. InputSprocket requires the latest Universal Headers -- You can find them with the
  44. latest version of your development environment, Apple's WWW and FTP sites or the
  45. developer CD-ROMs.
  46.  
  47. InputSprocket needs a 640x480 display (or larger) in order for its dialog to 
  48. work. If you are asking DrawSprocket for a smaller display size than that you
  49. should switch out before calling InputSprocket.
  50.  
  51.  
  52.  
  53.  
  54. Compatibility with Previous Releases
  55. ------------------------------------
  56.  
  57. InputSprocket 1.7 should be fully compatible with previous releases of InputSprocket.
  58.  
  59.  
  60. Changes from 1.4.1 to 1.7
  61. -------------------------
  62.  
  63. This version adds a generic USB HID class driver, which replaces all the vendor specific drivers in the previous version. Any USB device which is a true HID device should function, as long as the software determins that it is a gaming device (see list below). 
  64.  
  65. Supported HID device applilcation level collections:
  66. - Generic desktop page (0x01): Mouse, Joystick, Game Pad, Multi-Axis Controller
  67. - Simulation controls page (0x02): Flight, Automobile, Tank, Spaceship, 
  68.      Submarine, Sailing, Motorcycle, Sports, Airplane, Helicopter, 
  69.      Magic Carpet, Bicycle Simulation Devices; Flight Control Stick, Flight
  70.      Stick, Flight Yoke
  71. - VR Controls Page (0x03): Belt, Body Suit, Glove, Head Mounted Display, Hand
  72.      Tracker, Oculometer, Vest, Animatronic Device
  73. - Sports Controls Page (0x04): Baseball Bat, Golf Club, Rowing Machine, 
  74.      Treadmill
  75. - Game Controls Page (0x05): 3D Game Controller, Pinball Device, Gun Device
  76.  
  77. Devices with relative value input (ie pointing devices, such as mice), now can have their values 'accelerated' before being passed along to the application need. This is user controlled, in the configure dialog.
  78.  
  79. All the InputSprocket drivers consolidated into one file. External files are loaded first, so an external file gets the first chance to match to a device.
  80.  
  81. The field 'reserved1' in the ISpDeviceDefinition structure was renamed permanentIDExtend. This change will not effect any binaries, but source code to some drivers may require an update when using the new InputSprockket.h header file. This field is used to extend the permanentID to 64 bits. If this field is zero, then only 32 bits are significant, as before. If these two fields do not match, but the permanentID fields do match, that will be prefered to a device where the permenantIDs do not match. (If the permanentIDs do not match, then the permanentIDExtend fields will not be compared).
  82.  
  83. Changes from 1.4 to 1.4.1
  84. -------------------------
  85.  
  86. - International bug fixes.
  87.  
  88. - Minor bug fixes.
  89.  
  90. - Localized for distribution with localized versions of MacOS.
  91.  
  92.  
  93. Changes from 1.3 to 1.4
  94. -----------------------
  95.  
  96. This version adds support for many new USB devices: Saitek Cyborg 3D stick, 
  97. KYE/Genius Joystick and Gamepad, Edge/Rockfire Joysticks (2), and gamepads (3).
  98.  
  99. The need label kISpElementLabel_Btn_PauseResume has been replaced with two
  100. new labels: kISpElementLabel_Btn_Quit and kISpElementLabel_Btn_StartPause.
  101. This is to clarify the purpose and default behavior intended by a need. The
  102. quit need defaults to '<esc>' on the keyboard and can only be changed to
  103. 'Cmd Q'. This need quits an active game, or quits the application entirely.
  104. The start/pause need corresponds to the action that a 'start' button on a 
  105. gamepad would have, which is often pause. Gamepads and other devices with
  106. a button labeled 'start' should default to the start/pause need. On a keyboard,
  107. the start/pause need can be mapped to any key, unlike the quit need.
  108.  
  109. There is a hack to allow calibration of USB devices.  Essentially, the first
  110. time you configure a device, you should roll the controller to the maximum
  111. extents possible.  InputSprocket will memorize the values being returned by
  112. the controller and use these to calibrate it.
  113.  
  114. Changes from 1.2 to 1.3
  115. -----------------------
  116.  
  117. A resource definition file "InputSprocket.r" has been added. You can use this
  118. file to create a Rez '.r' file to build the ISp resources into your
  119. application.
  120.  
  121. One of the templates is for the 'tset' resource created by the ISp keyboard
  122. driver. Note this templete is ONLY valid for a 'tset' generated by the
  123. keyboard. The only way to tell who created the 'tset' is to examine the 'setl'
  124. resource that points to it. The new sample code for DroneZone uses this
  125. template so that the defaults for the keyboard are in a Rez file and are
  126. easily updated when then application's list of needs changes. You still have
  127. recreate the sets for mice and gaming devices when your needs list changes
  128. during development, but not having to re-setup all the keyboard keys every
  129. time should be a big win. (Note: You may have to delete your InputSprocket
  130. Preferences file in order to get the new defaults from the application -- or
  131. change the subCreatorCode passed to ISpInit.)
  132.  
  133. Special thanks to Jeremy Erwin who is not affiliated with MacALLY, for the 
  134. code to support the MacALLY stick.
  135.  
  136. All mice and keyboard drivers are 'passthru' in the debug versions. This
  137. means that it is VERY important you make sure you also test with the release
  138. versions of the drivers, since some things will work fine with the debug
  139. versions but not with the release drivers. On the other hand, you will never
  140. get stuck in the debugger without being able to type and/or move the cursor.
  141.  
  142. InputSprocket resets all elements to 'zero' values (symmetric axis are
  143. reset to the center) across suspend/resume. It is the responsibility of
  144. individual ISp drivers to push data to any elements which are non-default
  145. valued when the driver is reactivated.
  146.  
  147. Many minor bugs have been fixed.
  148.  
  149. 68K support has been added. 68K InputSprocket is only available through
  150. CFM-68K.
  151.  
  152.  
  153.  
  154.  
  155. Changes from 1.1 to 1.2
  156. -----------------------
  157. This release involves many minor improvements to the InputSprocket drivers, 
  158. including an improved user interface (UI) for axis. Some new drivers have 
  159. also been added. Several problems and bugs have been addressed.
  160.  
  161. A new resource has been defined (kISpApplicationResourceType = 'isap') which
  162. all applications which use InputSprocket should put (ID 0) in their resource
  163. fork. They should always set bit 0 (kISpAppResFlag_UsesInputSprocket) and
  164. set bit 1 (kISpAppResFlag_UsesISpInit) if they use the high level API (ie they call
  165. ISpInit, ISpConfig, etc... in other words they have a needs list). The rest of
  166. the bits and reserved fields should be set to 0.
  167.  
  168. A new ISpElementKind has been added: kISpElementKind_Delta which specifies
  169. a Fixed point number of inches moved. InputSprocket Mouse and 
  170. InputSprocket Kensington now register elements of this kind in the low level. 
  171. The high level (through ISpConfigure) supports axis as well as delta kinds.
  172. This kind is very useful if you want to control a cursor.
  173.  
  174. A new definition of ISpNeed can be used by defining USE_OLD_ISPNEED_STRUCT to
  175. 0. The first reserved field (a short) was changed to two UInt8s: playerNum and
  176. group. Use playerNum to tell the driver some needs are related to a particular
  177. player (on the same machine). The SprocketInvaders source code will be reved to
  178. use this field. Group is used to group items together, such as a look up, look
  179. down need (assuming you can't use an axis). You should also group items
  180. together that have the same effect, but are 'tuned' button, axis, and delta versions.
  181. The current ISp drivers do not use this hinting, yet. Some new definitions for the 
  182. ISpNeedFlagBits have been added. If you use the new definition, make sure you 
  183. check your code for cases where you were initializing the struct. You now may 
  184. be misaligned, and many compilers will NOT generate a warning.
  185.  
  186. InputSprocket Mouse supplies pseudo-buttons in the high level for modifier
  187. keys in combination with mouse clicks. You will have at least four buttons
  188. (where some may actually be command/shift/control/option-click on 
  189. one-button mice) for any mouse device. This should make it straightforward
  190. to port games which expect a two button mouse: use ISp with delta and
  191. button needs -- and dont worry about what type of device the user has.
  192.  
  193. InputSprocket Speech added back to distribution (crashing bug fixed)
  194.  
  195. - InputSprocket Gravis supports Blackhawk and uses new UI (new save set format)
  196. - InputSprocket Thrustmaster uses new UI (new save set format)
  197. - InputSprocket Joy completely revised, renamed InputSprocket CH, now supports
  198.   multiple devices seperately and supports up to 8 buttons and 4 hats per device
  199.   (new save set format)
  200. - InputSprocket Kensington added, supports kensington devices regardless of their software
  201. - InputSprocket Sidewinder 3D Pro added, supports Microsoft Sidewinder joystick 
  202. - InputSprocket AppleJack added, supports Pippin/AppleJack controller
  203. - InputSprocket Keyboard supports modifier keys in conjunction with a normal key
  204.   (now either Escape or Cmd-Q are valid for kISpElementLabel_Btn_PauseResume)
  205. - Device and element strings have been reviewed, and some have been changed
  206. - ISpConfigure saves and restores the port.
  207. - A new function: ISpTimeToMicroseconds has been added.
  208. - There are some new bits defined for ISpNeedFlagBits. 
  209. - Some new element labels have been added.
  210. - Old saved sets for devices other than mouse and keyboard do not work
  211.  
  212.  
  213. Known Problems in 1.2
  214. ---------------------
  215. - Kensington Mouse-in-a-box reports two buttons (only the first one works)
  216. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  217.   ALPS software)
  218. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  219.   Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  220. - CH Trackball PRO does not appear
  221. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  222. (fix is to configure all buttons to do nothing in ThrustWare)
  223. - Machines based on the Tanzania motherboard (Motorola StarMax, APS MPower,
  224.   Apple PowerMacintosh 4400) will always show an extra Mouse device for the
  225.   PS/2 mouse regardless whether one is plugged in (even though the 4400 has
  226.   no PS/2 ports, the phantom ADB devices for them are still created). The
  227.   PS/2 mouse only reports one button.
  228. - When a Sidewinder 3D Pro stick is connected, an extra mouse device is shown
  229.   which is active when the 'mouse/joystick' switch is switched to 'mouse'.
  230. - It is unstable to have multiple applications use InputSprocket 
  231.   simultaneously. If your application can be suspended and uses InputSprocket 
  232.   you should use ISpShutdown and ISpStartup so that InputSprocket is off while
  233.   you are in the background.  This is a bug (since 1.0) and will be fixed
  234.   in the next version.  If you are a user you can work around this problem
  235.   by not running more than one InputSprocket application at the same time.
  236. - When debugging, you may need to deactivate the Mouse and Keyboard drivers in
  237.   order to be able to interact with your debugger.
  238.  
  239.  
  240.  
  241. Changes from 1.0.2 to 1.1
  242. -------------------------
  243.  
  244. Known Problems in 1.1
  245. ---------------------
  246. - Kensington Trackball does not appear if Kensington software is installed
  247. (appears w/o Kensington software)
  248. - ALPS GlidePoint does not appear if ALPS software is installed (appears w/o
  249. ALPS software)
  250. - Mouse Systems Mouse does not appear if Mouse Systems software ('3-Button
  251. Power') is installed (appears as 1 button mouse w/o Mouse Systems software)
  252. - CoStar Stingray Trackball does not appear if CoStar software ('Stingray') is
  253. installed (appears w/o CoStar software)
  254. - CH Trackball PRO does not appear
  255. - Thrustmaster software generates keyDowns if so configured with ThrustWare
  256. (fix is to configure all buttons to do nothing in ThrustWare)
  257.  
  258. Changes from 1.02
  259. -----------------
  260. - new APIs (ISpStartup, ISpShutdown, ISpTickle, ISpDevices_ActivateClass,
  261.         ISpDevices_DeactivateClass)
  262. - some general UI improvements in both appearance and performance have been
  263. made
  264. - new driver InputSprocket Joy (supports some features of JoyManager devices --
  265. ie mainly CH products)
  266. - new driver InputSprocket Thrustmaster (supports FCS, WCS, RCS)
  267. - new driver InputSprocket Gravis (supports MouseStick, Firebird, GamePad)
  268. - new driver InputSprocket Speech (you must activate explicitly and requires
  269. ISpTickle be called)
  270. - InputSprocket Mouse changed to have new UI and is implemented via ADBMgr
  271. directly instead of a CursorDeviceMgr Patch
  272. - InputSprocket Keyboard has been slightly changed if there is only one page
  273. - driver function to plot icons has been changed (faster)
  274. - bug when you select a 0 length name to save a set has been fixed
  275. - bug involving choosing monitor has been fixed (might chose something other
  276. than the main monitor randomly)
  277. - CH Flightstick, CH Gamepad, CH Jetstick and MacEnjoy no longer generate a
  278. mouse device
  279. - a crashing bug involving multiple applications using input sprocket
  280. simultaniously has been fixed
  281. - a very small memory leak involving ISpConfigure has been fixed
  282. - DONT_USE_OLD_INPUT_SPROCKET_LABELS changed to USE_OLD_INPUT_SPROCKET_LABELS
  283. in InputSprocket.h
  284. - a bug where InputSprocket Keyboard and InputSprocket Mouse called InitGraf
  285. has been fixed
  286.  
  287. Other notes:
  288. - you must call ISpTickle in order for InputSprocket Speech to work
  289. - you must call ISpDevices_ActivateClass(kISpDeviceClass_SpeechRecognition) to
  290. turn InputSprocket Speech on
  291. - requires SpeechRecognition extension 1.5.1 (PlainTalk 1.5)
  292.  
  293.  
  294. InputSprocket Joy Notes
  295. -----------------------
  296. - supports all JoyManager devices as a single input sprocket device.
  297. - UI may show popups for controls the device does not have
  298. - JoySimpleData based
  299. - only supports the trigger and three additional buttons
  300. - digital pointing devices (ex. CH Gamepad's pad) are treated as a pair of axis
  301. not a POV Hat
  302.  
  303.  
  304.  
  305. Changes from 1.0 and 1.0.2 Release Notes
  306. ----------------------------------------
  307.  
  308.  
  309. There is a new InputSprocket.h that has new versions of the names for the
  310. labels as well as additional labels.
  311.  
  312. The following bugs were fixed in the 1.01 or the 1.02 releases.
  313. - keyboard UI now generates better names than Min/Max for axis if ElementLabel
  314. is useful
  315. - various problems with alignment and growing of dialog were fixed
  316. - flickering with icons in thrustmaster and mouse fixed
  317. - stub library included in this release with file type 'stub'
  318. - axis flipping check box now works again for the mouse driver
  319. - ISpDevices_Extract functions no work when an exact count is passed to them
  320. - Icon plotting is more robust.
  321. - The OK button is no longer hilited when the keyboard is active.
  322. - InputSprocket will now unload the drivers when the last fragment is unloaded
  323. - InputSprocket no longer leaks memory when you quit in the suspended state
  324. - when there are no devices to configure and ISpConfigure is called it will
  325. display a warning instead of doing nothing
  326. - ISpSuspend no longer leaks 10,000 bytes every call
  327.  
  328. The following bugs are known:
  329. -There is an incompatability with the mouse driver and the Kensignton trackball
  330. software that causes no mice devices to appear.
  331. -There is a incompatability with the Kensington trackball that causes an extra
  332. mouse device to appear when the hardware is installed and the software is not
  333. installed.
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341. InputSprocket Clarifications and Guidelines
  342. -------------------------------------------
  343.  
  344. Although not a change, a clarification is needed on how exclusive items operate
  345. particularly with regards to hat-type switches (direction-pads, digital
  346. joysticks and hat switches). A group of mutually exclusive items is a group of
  347. items where activation of one item automatically deactivates other items in the
  348. group. A group of mutually exclusive items might be assigned to a hat. An
  349. example is "look" functionality which allows the user to different directions
  350. from the cockpit in a flight simulator implemented as four different button
  351. needs. A problem will arise if the group of items only uses the activation of
  352. these buttons to select which item is active. This problem will only arise if
  353. the program in question does not properly handle combinations of the button
  354. activations.
  355.  
  356. For example, if I assign "look right" to the right item of a hat and "look
  357. forward" to the top item of a hat. Now, if I press right on the hat I will look
  358. right. If I now wiggle my thumb upwards so that up is activated (up and right
  359. are now simultaneously activated) I will look forward. If I slide my thumb back
  360. to the right, I will release the "look up" item, but since the "look right"
  361. item was activated the whole time, I do not reactivate the "look right"
  362. function. I now have my thumb holding the hat right, but I am looking forward.
  363.  
  364. In fact, since the "look right" item is already held down, it is the ONLY
  365. button on the entire controller which cannot be pressed and it becomes
  366. impossible to look right without releasing the hat and pressing it right again.
  367. Symptoms of this are that it is easier to look right by pressing forward and
  368. sliding right to the corner of the d-pad than it is to press right directly!
  369.  
  370. The only way to correct for this is to consider both presses (kISpButtonDown)
  371. and releases (kISpButtonUp) of any button needs which are exclusive. In this
  372. case, when right is pressed, the right function would be activated. When the up
  373. function is activated, both items are now activated. The InputSprocket client
  374. can either deactivate the original right function and switch to the up
  375. function, or it can remain with the right function and only switch to the up
  376. function when the right button is released. If the hat is moved to the right
  377. again and the up function is released, then the client should switch back to
  378. the right function if it has switched away.
  379.  
  380. Proper handling of releases of button needs will allow mutually exclusive
  381. functions to operate properly.
  382.  
  383.  
  384.  
  385.  
  386. Before you ship any application, check to make sure you get no warnings when
  387. running with InputSprocketDebugLib and the debug versions of the drivers.
  388.  
  389. We recommend that if you are using InputSprocket version greater than 1.02
  390. that you no longer support any third party joystick APIs.  You must not support
  391. those APIs at the same time as you have InputSprocket devices enabled.
  392.  
  393. If you are using InputSprocket via the high level (ISpConfigure and ISpInit and
  394. so on), We recommend that you only use the axis and button data types and
  395. build the controls that you need out of those types.  This will get you the best
  396. support.  Many of the drivers are going to only primarily emulate those
  397. datatypes.
  398.     
  399. Your game may provide default and optional configurations for the
  400. keyboard, the mouse and any other devices.  This is done by including
  401. 'setl' and 'tset' resources a resource file, such as the application's,
  402. that is open when ISpInit and ISpConfigure are called.  Since the
  403. format of the 'tset' resource is determined by the device, it is
  404. easiest to use the configuration dialog to establish the desired
  405. configurations then copy them from the Preferences file into your
  406. resource file.
  407.         
  408.     1.    Remove the InputSprocket Preferences file from the Preferences
  409.                 folder.
  410.             
  411.     2.    Run your game, and invoke the ISpConfigure dialog.
  412.             
  413.     3.    Configure and save as many sets as you like for any and all
  414.                 devices.
  415.             
  416.     4.    Quit.
  417.             
  418.     5.    Use ResEdit to move the 'setl' and 'tset' resources to your
  419.           resource file.
  420.             
  421.     6.    Edit the 'setl' resource using the 'TMPL' supplied in
  422.                 InputSprocketSimpleTest.rsrc.
  423.             
  424.     7.    Change the flags field to $00000002 for the default entry for
  425.           a given device or $00000004 for any other entry for that
  426.           device.
  427.             
  428.     8.    Again remove the InputSprocket Preferences file from the
  429.           Preferences folder so you can test with a clean slate.
  430.             
  431.     9.    Rebuild your game and try out your new configurations.
  432.             
  433.             
  434. Alternatively, Rez templates are now provided for all InputSprocket resources.
  435.     
  436.  
  437.  
  438.  
  439. ISp drivers must insure that they are VM safe. ADB drivers can link to 
  440. InputSprocketDeferLib to insure their ADB handlers are executed at a time
  441. where it is safe to page. The new sample ADB driver does this.
  442.